
import proxyData  from './proxyData';
import observe from './observe';

export function initState(vm) { // 初始化状态(数据)
  var options = vm.$options;

  if (options.data) { // data、watch、computed都要分开init
    initData(vm);
  }
}

function initData(vm) {
  var data = vm.$options.data;
  // 在挂载data到实例上时，希望是一个临时data，而不是原来实例时传进来的data
  // data可能是return出来的， 也可能是一个对象，或是其他
  vm.$data = data = typeof data === 'function' ? data.call(vm) : data || {};

  for (var key in data) { // 把data的数据代理到实例上
    proxyData(vm, '$data', key);
  }
  // 对data及内部数据进行观察
  observe(vm.$data);
}
